﻿using System;

namespace AEM.Data.BLL.Actions
{
    public static class StatusInfo
    {
        static StatusInfo()
        {
            Addstatusinfo = doAddstatusinfo;
            Modifiystatus = doModifiystatus;
            Selectestatus = doSelectestatus;
            Deletestatus = doDeletestatus;
        }

        //======================================================================================================================
        //edited by  chen
        #region 状态信息添加
        private static AddstatusResult doAddstatusinfo(Model.LiftStatus statusdata)
        {
            if (null == statusdata) return AddstatusResult.DataIsNull;
            Model.LiftStatus model = DAL.LiftStatus.Select(statusdata.ID);
            if (null != model) return AddstatusResult.StatusIsExist;
            model = null;
            model = DAL.LiftStatus.Select("LiftStatusName", statusdata.LiftStatusName);
            if (null != model) return AddstatusResult.StatusNameIsExist;
            model = null;
            model = DAL.LiftStatus.Select("LiftStatusNum", statusdata.LiftStatusNum.ToString());
            if (null != model) return AddstatusResult.StatusNumIsExist;
            bool ret = DAL.LiftStatus.Add(statusdata);
            if (ret)
                return AddstatusResult.OK;
            else
                return AddstatusResult.Error;
        }
        #endregion 状态信息添加
        #region 状态信息修改
        private static ModifiystatusResult doModifiystatus(Model.LiftStatus statusdata)
        {
            if (null == statusdata) return ModifiystatusResult.StatusIsNull;
            Model.LiftStatus model = DAL.LiftStatus.Select(statusdata.ID);
            if (null == model) return ModifiystatusResult.StatusIsNotExist;
            model = null;
            model = DAL.LiftStatus.Select("LiftStatusNum", statusdata.LiftStatusNum.ToString());
            if (null != model && model.ID != statusdata.ID) return ModifiystatusResult.StatusNumIsExist;
            model = null;
            model = DAL.LiftStatus.Select("LiftStatusName", statusdata.LiftStatusName);
            if (null != model && model.ID != statusdata.ID) return ModifiystatusResult.StatusNameIsExist;
            bool ret = DAL.LiftStatus.Update(statusdata);
            if (ret)
                return ModifiystatusResult.OK;
            else
                return ModifiystatusResult.Error;
        }
        #endregion 状态信息修改
        #region 状态信息查询
        private static Model.LiftStatus doSelectestatus(int id)
        {
            return DAL.LiftStatus.Select(id);
        }
        #endregion 状态信息查询
        #region 删除状态信息
        private static DeletestatusResult doDeletestatus(int id)
        {
            Model.LiftStatus model = DAL.LiftStatus.Select(id);
            if (null == model) return DeletestatusResult.StatusIsNotExist;
            bool ret = DAL.LiftStatus.Delete(id);
            if (ret)
                return DeletestatusResult.OK;
            else
                return DeletestatusResult.Error;
        }
        #endregion 删除状态信息
        //=======================================================================================================================

        #region 函数定义
        /// <summary>
        /// 输入错误信息
        /// 第一个参数：错误码
        /// 第二个参数:错误名
        /// 第三个参数:错误原因
        /// </summary>
        public static Func<Model.LiftStatus, AddstatusResult> Addstatusinfo;
        public static Func<Model.LiftStatus, ModifiystatusResult> Modifiystatus;
        public static Func<int, Model.LiftStatus> Selectestatus;
        public static Func<int, DeletestatusResult> Deletestatus;
        #endregion 函数定义

        public enum AddstatusResult
        {
            OK,
            StatusIsExist,
            DataIsNull,
            StatusNameIsExist,
            StatusNumIsExist,
            Error
        }
        public enum ModifiystatusResult
        {
            OK,
            /// <summary>
            /// 状态内容信息为空
            /// </summary>
            StatusIsNull,
            /// <summary>
            /// 状态不存在
            /// </summary>
            StatusIsNotExist,
            Error,
            StatusNumIsExist,
            /// <summary>
            //状态名已经存在
            /// </summary>
            StatusNameIsExist
        }
        public enum SelectstatusResult
        {
            ErrorExist,
            ErrorIsNotExist
        }
        public enum DeletestatusResult
        {
            OK,
            StatusIsNotExist,
            Error
        }

    }
}
